The invention is related to Internet Protocol (IP) telephony systems. More specifically, the invention is related to systems and methods for determining how best to route the data packets that carry communications enabled by an IP telephony system.
Existing IP telephony systems allow users to place and receive telephone calls or to send and/or receive other types of communications, such as text messages, SMS messages, MMS messages and the like. The communications are transmitted, at least in part, by data packets that traverse a private and/or public data network.
For example, a calling party can place a telephone call to a called party using an IP telephony device that is coupled to a private or public data network. When the user requests that the call be placed, an IP telephony system receives the request and sets up the call between the calling party's telephony device and the called party's telephony device. The called party's telephony device can also be an IP telephony device that is coupled to a private or public data network. Alternatively, the called party's telephony device could be an analog telephone that is coupled to a publically switched telephony network (PSTN). In still other instances, the called party's telephony device could be a cellular telephone or a mobile computing device with cellular telephone capabilities that is coupled to a cellular telephony network.
Typically, an IP telephony system receives a call setup request from the calling party's telephony device at an inbound proxy server (or a session border controller, or an originating gateway). The inbound proxy server consults a routing engine to determine the identity of an outbound proxy server (or session border controller or destination gateway) that is capable of communicating with the called telephony device. The inbound proxy server passes along the call setup request to the outbound proxy server. The outbound proxy server then contacts the called telephony device to attempt to setup the call.
During the call setup, the calling telephony device and the called telephony device are instructed where to send data packets bearing the media of the telephony communication so that those data packets can be delivered to the other telephony device. Often, a media relay is selected, and both the calling and called telephony devices are instructed to send data packets to the media relay, and to receive data packets from that media relay. In some instances, two or more media relays may be used in a chain fashion to create a path for the data packets to travel between the calling and called telephony devices.
Once the call has been setup, the called and calling telephony devices send data packets back and forth to each other using the path established during call setup. And this path typically no longer includes the inbound and outbound proxy servers. Instead, the path typically includes only one or more media relays that are used to help transmit the data packets between the calling and called telephony devices.
The complete path that the data packets traverse across the data network usually includes other devices in addition to the media relays that are identified during call setup. For example, when both the calling telephony device and the called telephony device are IP telephony devices, the calling and called telephony devices will likely use an interface device of some type to gain access to the data network. The interface device could be a wired or wireless router, or some other type of data network interface device. Regardless, the interface devices are also a part of the overall path that data packets traverse as they travel between the calling and called telephony devices.
If one of the calling and called telephony devices is an analog telephony device that is reachable through a PSTN, or a cellular telephony device that is reachable via a cellular telephony service provider, the path will likely include a gateway that acts as an interface between the data network and the PSTN or cellular telephony service provider.
If both the calling and called telephony devices are IP telephony devices, in some instances, the called and calling telephony devices may be instructed to send data packets directly back and forth between each other. In this instance, the path would not include a media relay. However, the path would still likely include the data network interface devices which the calling and called telephony devices use to access the data network.
In addition, when data packets are sent across a data network such as the Internet, the data packets typically make multiple separate hops between various nodes of the public Internet. As a result, two consecutive data packets generated by the calling telephony device could traverse vastly different paths as they make their way between the calling telephony device and the called telephony device.
The quality of a telephone call, or any other type of communication carried in this fashion, is highly dependent on how well the data packets carrying the media of the telephony communication are being transmitted over the relevant private and/or public data networks. If data packets are being lost, call quality will deteriorate. If transmitted data packets are being significantly delayed, call quality will deteriorate. Another problem is jitter, where the latency or delay is variable in nature. If jitter becomes a problem, call quality will again deteriorate.
Presently, IP telephony systems have only limited control over the path that data packets bearing the media of a telephony communication traverse as the data packets travel between a calling and called telephony device. Typically, the IP telephony can only determine the identity of the media relays that are used in the path.
When an IP telephony system has a choice about which media relay or relays to select for a particular telephony communication, the media relay or relays are often selected based on their physical proximity to the calling or called telephony devices, or based on their proximity to the proxy servers that were responsible for setting up the call. The assumption is that if the media relay(s) are physically close to the calling and/or called telephony devices, they will provide higher call quality than media relays that are located further away from the calling and/or called telephony devices. Unfortunately, this is not always a good assumption.
In some instances, an IP telephony system may attempt to track the quality provided by various paths between two endpoints. The quality measure that is recorded for each path is typically an average of multiple measures of the path's quality taken at multiple different points in time. While such measures can be helpful in identifying paths that offer superior quality, or paths that offer poor quality, these average quality measures fail to take into account the amount that the path's quality can vary over time.
For example, a quality measure for a path might be based on ten separate quality measurements taken at six minute intervals. When the ten quality measurements are averaged, they may yield a quality score that is good. However, the individual quality values might include five values that represent excellent quality and five values that represent poor quality. When averaged, they appear to indicate that the path provides good quality. In reality, the quality of the path experienced great variability over the one hour period.
When two parties are conducting a VOIP telephone call, the variability of the quality of the call can have a large impact on the user's experience. Even if the quality of a call varies between very good and average, frequent changes in the call quality are noticeable to the parties conducting the call, and are considered undesirable. In some instances, the user's perception of the quality of the call may be better if the call quality is consistently average, as opposed to varying frequently between average and very good.
Because of these factors, there is a need for systems and methods of tracking the variability in quality offered by different communication paths. There is also a need for systems and methods that take quality variation information into account when determining the path that is to be used for a communication.